Python画图总结 | 您所在的位置:网站首页 › python plt图例 › Python画图总结 |
1 绘图
1.1 曲线图
1234567fig = plt.figure()# 一个二维图ax = fig.add_subplot(111)ax.plot(xlist, ylist)# 或者一个三维图ax = fig.add_subplot(111, projection='3d')ax.plot(xlist, ylist, zlist)
常用参数: - color:颜色 - linewidth:线宽 - linestyle:线型 - label:标签 - marker:曲线上的标记类型 - markersize:曲线上的标记大小 Matplotlib官网关于线型的描述
线型除了'solid', 'dotted'等,还可以用tuple来定义,如下图所示: xlist = [1, 2, 3, 4, 5]y1_list = [2, 4, 6, 8, 10]y2_list = [1, 3, 5, 7, 9] fig = plt.figure()ax = fig.add_subplot(111)ax.plot(xlist, y1_list, label='Y1') # 绘制第一个轴的ax.set_xlabel('$x(m)$') # 设置X轴ax.set_ylabel('$Y1(m/s^2)$') # 设置Y1轴 ax_new = ax.twinx()ax_new.plot(xlist, y2_list, label='Y2') # 绘制第二个轴的ax_new.set_ylabel('$Y2(m^2)$') # 设置Y2轴 绘制多个子图参考知乎文章和CSDN文章 1234567891011121314import numpy as npimport matplotlib.pyplot as plt x = np.linspace(0, 10)fig1 = plt.figure(1)ax1 = plt.axes([0.1, 0.1, 0.8, 0.4]) # 四个值分别是: [子图左下角的x 子图左下角的y, 子图宽度, 子图高度] 四个值都是相对全图来取值的,范围为0-1ax1.plot(np.sin(x), label='sinx')ax1.legend() ax2 = plt.axes([0.1, 0.5, 0.8, 0.4])ax2.plot(np.cos(x), label='cosx')ax2.legend() plt.show() 1.2 散点图 1234567fig = plt.figure()# 一个二维图ax = fig.add_subplot(111)ax.scatter(xlist, ylist)# 或者一个三维图ax = fig.add_subplot(111, projection='3d')ax.scatter(xlist, ylist, zlist)常用参数: - color:颜色 - marker:散点类型 - s:散点尺寸 - linewidth:散点描边宽度 - edgecolor:散点描边颜色 - label:标签 Matplotlib官网关于marker的描述
PS:画空心原点,将颜色设置为白色(color='white'),选择合适的描边宽度和颜色即可。 1.3 箱型图 123fig1 = plt.figure(1)ax1 = plt.axes()ax1.boxplot(your_array) # 二维数组,对每列画箱型图常用参数: 参考Matplotlib官网:boxplot sym: 奇异值标记设置,例如'r+'为红色+号 vert:画垂直箱体图。True垂直箱体图 or False水平箱体图 whis: 奇异值门槛。默认1.5,取值越大箱体包纳的数据越多。 widths: 箱体宽度。默认0.5 labels: 标签。给定一个标签序列 meanline: 布尔值 是否画出平均值线其他可定义的参数:参考Matplotlib官网:boxplot格式自定义 boxpros : 给定一个字典 设置箱体的属性 whiskerprops: 给定一个字典 设置两端的属性 flierprops: 给定字典 设置奇异值的属性 medianprops: 给定字典 设置中间线属性 meanprops: 给定字典,设置平均值属性设置箱体填充颜色:参考Matplotlib官网:boxplot箱体填充 3 颜色 3.1 默认颜色Matplotlib官网关于默认颜色的描述
提取默认颜色序列colors (画图引用时传入color=colors[i]即可) 12prop_cycle = plt.rcParams['axes.prop_cycle']colors = prop_cycle.by_key()['color'] #### 3.2 颜色库 Seaborn调色板表格整理 3.3 三维图背景改成白色和去网格 1234ax.w_xaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))ax.w_yaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))ax.w_zaxis.set_pane_color((1.0, 1.0, 1.0, 1.0))ax.grid(False) 4 坐标轴和图例 4.1 显示右上刻度线,刻度线朝内 123plt.rcParams['xtick.direction'] = 'in' # x刻度线朝内plt.rcParams['ytick.direction'] = 'in' # y刻度线朝内plt.tick_params(top='in', right='in', which='both', labelsize=12) # 显示上侧和右侧的刻度并朝内, 设置字体大小12 4.2 图例位置、图例去除框、图例字体和字体大小设置 12345plt.rc('legend', fontsize=8) # 图例字体大小plt.legend(loc='upper left', frameon=False, prop={"family": "simsun"})# 图例位置的参数有:'upper left', 'upper right', 'lower left', 'lower right'# 'upper center', 'lower center', 'center left', 'center right'# 'center', 'best' 4.3 使用Latex语法 1234import matplotlib as mplmpl.rcParams['text.usetex'] = Trueax.set_xlabel('$x(m)$') # Latex语法在美元符号$$中间输入ax.set_ylabel('$y(m/s^2)$')PS: 开启text.usetex时不能有中文,所以需要使用中文前设置为False,使用中文后设置为True 4.4 设置坐标轴范围,设置刻度 12345678fig1 = plt.figure(1)ax1 = plt.axes()ax1.plot(np.linspace(-100, 100, 100), np.linspace(-20, 20, 100))ax1.set_xlim([77, 85]) # 设置X轴范围ax1.set_ylim([-15, 5]) # 设置Y轴范围ax1.set_xticks(np.arange(78, 86, 2)) # 设置X轴刻度ax1.set_yticks([-10, -5, 0]) # 设置Y轴刻度plt.show() 5 保存 12345678xlist = [1, 2, 3, 4, 5]ylist = [2, 4, 6, 8, 10]fig = plt.figure(1)ax = fig.add_subplot(111)ax.plot(xlist, ylist)# bbox_inches='tight'保存图片时保持紧凑 pad_inches=0图片周围不留白fig.savefig('filename', dpi=600, bbox_inches='tight', pad_inches=0) 图片转灰度 1234from PIL import Imageim = Image.open('image/q_ij.png')im = im.convert('L')im.save('image/q_ij.png') 6 常见问题 6.1 无法显示中文 12import matplotlib as mplmpl.rc("font", family='simsun') # 默认宋体 6.2 不显示负号 1plt.rcParams['axes.unicode_minus'] = False # 解决无法显示负号 |
CopyRight 2018-2019 实验室设备网 版权所有 |